package com.swust.security.controller;

import org.springframework.security.access.annotation.Secured;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Author hqf
 * @Date Created in 2021/9/8 20:56
 * @Description
 */
@RestController
@RequestMapping("/test")
public class TestController {

    @GetMapping("/hello")
    public String hello(){
        return "你好";
    }

    @GetMapping("/index")
    public String index(){
        return "hello world 登录成功..";
    }

    @GetMapping("/get")
    @Secured({"ROLE_user"}) // 判断是否具有角色
    public String get(){
        return "这个方法只有ROLE_user能够访问...";
    }

    /**
     * @PreAuthorize 注解适合进入方法前的权限验证
     * @PostAuthorize 注解适合进入方法后的权限验证
     * 区别就是前者不具有权限时不执行方法内容
     * 后者会先执行方法逻辑再进行权限验证
     */
    @GetMapping("/post")
    @PreAuthorize("hasAnyAuthority('post')") // 具有post权限才能访问
//    @PostAuthorize("hasAnyAuthority('post')")
    public String post(){
        System.out.println("post...");
        return "post";
    }

    /**
     * @PostFilter 对方法返回的数据进行过滤
     * @PreFilter 对传入方法的数据进行过滤
     */

}
